qr_factor Interface

public interface qr_factor

Module Procedures

private pure subroutine qr_factor_no_pivot(a, tau, qr, q, r)

Computes the QR factorization of an M-by-N matrix.

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in), dimension(:,:) :: a

The M-by-N matrix to factor.

real(kind=real64), intent(out), optional, allocatable, target, dimension(:) :: tau

A MIN(M, N)-element array used to store the scalar factors of the elementary reflectors.

real(kind=real64), intent(out), optional, allocatable, target, dimension(:,:) :: qr

The M-by-N factored matrix stored such that the elements on and above the diagonal contain the MIN(M, N)-by-N upper trapezoidal matrix ( is upper triangular if M >= N). The elements below the diagonal, along with the array tau, represent the orthogonal matrix as a product of elementary reflectors.

real(kind=real64), intent(out), optional, allocatable, target, dimension(:,:) :: q

The M-by-M orthogonal matrix .

real(kind=real64), intent(out), optional, allocatable, target, dimension(:,:) :: r

The M-by-N upper trapezoidal matrix .

private pure subroutine qr_factor_no_pivot_cmplx(a, tau, qr, q, r)

Computes the QR factorization of an M-by-N matrix.

Arguments

Type IntentOptional Attributes Name
complex(kind=real64), intent(in), dimension(:,:) :: a

The M-by-N matrix to factor.

complex(kind=real64), intent(out), optional, allocatable, target, dimension(:) :: tau

A MIN(M, N)-element array used to store the scalar factors of the elementary reflectors.

complex(kind=real64), intent(out), optional, allocatable, target, dimension(:,:) :: qr

The M-by-N factored matrix stored such that the elements on and above the diagonal contain the MIN(M, N)-by-N upper trapezoidal matrix ( is upper triangular if M >= N). The elements below the diagonal, along with the array tau, represent the orthogonal matrix as a product of elementary reflectors.

complex(kind=real64), intent(out), optional, allocatable, target, dimension(:,:) :: q

The M-by-M orthogonal matrix .

complex(kind=real64), intent(out), optional, allocatable, target, dimension(:,:) :: r

The M-by-N upper trapezoidal matrix .

private pure subroutine qr_factor_pivot(a, jpvt, tau, qr, q, r, p)

Computes the QR factorization of an M-by-N matrix using column pivoting such that .

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in), dimension(:,:) :: a

The M-by-N matrix to factor.

integer(kind=int32), intent(inout), dimension(:) :: jpvt

On input, an N-element array that if JPVT(I) .ne. 0, the I-th column of A is permuted to the front of A * P; if JPVT(I) = 0, the I-th column of A is a free column. On output, if JPVT(I) = K, then the I-th column of A * P was the K-th column of A.

real(kind=real64), intent(out), optional, allocatable, target, dimension(:) :: tau

A MIN(M, N)-element array used to store the scalar factors of the elementary reflectors.

real(kind=real64), intent(out), optional, allocatable, target, dimension(:,:) :: qr

The M-by-N factored matrix stored such that the elements on and above the diagonal contain the MIN(M, N)-by-N upper trapezoidal matrix ( is upper triangular if M >= N). The elements below the diagonal, along with the array tau, represent the orthogonal matrix as a product of elementary reflectors.

real(kind=real64), intent(out), optional, allocatable, target, dimension(:,:) :: q

The M-by-M orthogonal matrix .

real(kind=real64), intent(out), optional, allocatable, target, dimension(:,:) :: r

The M-by-N upper trapezoidal matrix .

real(kind=real64), intent(out), optional, allocatable, target, dimension(:,:) :: p

The N-by-N column-pivot tracking matrix where .

private pure subroutine qr_factor_pivot_cmplx(a, jpvt, tau, qr, q, r, p)

Computes the QR factorization of an M-by-N matrix using column pivoting such that .

Arguments

Type IntentOptional Attributes Name
complex(kind=real64), intent(in), dimension(:,:) :: a

The M-by-N matrix to factor.

integer(kind=int32), intent(inout), dimension(:) :: jpvt

On input, an N-element array that if JPVT(I) .ne. 0, the I-th column of A is permuted to the front of A * P; if JPVT(I) = 0, the I-th column of A is a free column. On output, if JPVT(I) = K, then the I-th column of A * P was the K-th column of A.

complex(kind=real64), intent(out), optional, allocatable, target, dimension(:) :: tau

A MIN(M, N)-element array used to store the scalar factors of the elementary reflectors.

complex(kind=real64), intent(out), optional, allocatable, target, dimension(:,:) :: qr

The M-by-N factored matrix stored such that the elements on and above the diagonal contain the MIN(M, N)-by-N upper trapezoidal matrix ( is upper triangular if M >= N). The elements below the diagonal, along with the array tau, represent the orthogonal matrix as a product of elementary reflectors.

complex(kind=real64), intent(out), optional, allocatable, target, dimension(:,:) :: q

The M-by-M orthogonal matrix .

complex(kind=real64), intent(out), optional, allocatable, target, dimension(:,:) :: r

The M-by-N upper trapezoidal matrix .

complex(kind=real64), intent(out), optional, allocatable, target, dimension(:,:) :: p

The N-by-N column-pivot tracking matrix where .